package ace.module.account.api;

import ace.cmp.core.model.R;
import ace.cmp.sdk.api.SdkApi;
import ace.module.account.api.model.dto.IamApplicationDto;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotEmpty;

/**
 * 账户应用 rpc api.
 *
 * @author caspar
 */
public interface IamApplicationApi extends SdkApi<IamApplicationDto, Long> {
  /**
   * 查询账户应用.
   *
   * @param outType 外部应用类型
   * @param outId 外部应用id
   * @return 账户应用
   */
  R<IamApplicationDto> getByOutTypeAndOutId(
      @Valid @NotEmpty String outType, @Valid @NotEmpty String outId);

  /**
   * 查询账户应用,并且验证账户应用能否可用.
   *
   * @param outType 外部应用类型
   * @param outId 外部应用id
   * @return 账户应用
   */
  R<IamApplicationDto> getAndCheckByOutTypeAndOutId(
      @Valid @NotEmpty String outType, @Valid @NotEmpty String outId);
}
